/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import beans.B_Amenaza;
import beans.B_Vulnerabilidad;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import beans.B_VulnerabilidadAmenaza;
import db.DB_VulnerabilidadAmenaza;
import java.util.ArrayList;

/**
 *
 * @author JoseHernan
 */
public class C_VulnerabilidadAmenaza extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        //Preguntamos si estamos logueados
        if (session.getAttribute("userName") != null) {
            String action = request.getParameter("action2");
            String userName = session.getAttribute("userName").toString();
            String mensaje = "";
            int flagAccion = 0;
            String id = request.getParameter("id2");
            //Parameters
            int idVulnerabilidad = Integer.parseInt(request.getParameter("idVulnerabilidad"));
            int idAmenaza;

            B_VulnerabilidadAmenaza obj;
            B_Vulnerabilidad objVulnerabilidad;
            B_Amenaza objAmenaza;
            //New
            if (action.equals("n")) {
                //Set Parameters
                idAmenaza = Integer.parseInt(request.getParameter("idAmenaza"));
                obj = new B_VulnerabilidadAmenaza();
                obj.setId(Integer.parseInt(id));
                objAmenaza = new B_Amenaza();
                objAmenaza.setId(idAmenaza);
                obj.setObjAmenaza(objAmenaza);
                objVulnerabilidad = new B_Vulnerabilidad();
                objVulnerabilidad.setId(idVulnerabilidad);
                obj.setObjVulnerabilidad(objVulnerabilidad);
                obj.setUser(userName);
                mensaje = DB_VulnerabilidadAmenaza.crud(obj, action);
                flagAccion = 1;
            } //Update
            else if (action.equals("u")) {
                //Set Parameters
                idAmenaza = Integer.parseInt(request.getParameter("idAmenaza"));
                obj = new B_VulnerabilidadAmenaza();
                obj.setId(Integer.parseInt(id));
                objAmenaza = new B_Amenaza();
                objAmenaza.setId(idAmenaza);
                obj.setObjAmenaza(objAmenaza);
                objVulnerabilidad = new B_Vulnerabilidad();
                objVulnerabilidad.setId(idVulnerabilidad);
                obj.setObjVulnerabilidad(objVulnerabilidad);
                obj.setUser(userName);
                mensaje = DB_VulnerabilidadAmenaza.crud(obj, action);
                flagAccion = 1;
            } //Delete
            else if (action.equals("d")) {
                obj = new B_VulnerabilidadAmenaza();
                obj.setId(Integer.parseInt(id));
                mensaje = DB_VulnerabilidadAmenaza.crud(obj, action);
                flagAccion = 1;
            } else if (action.equals("ds")) {
                String[] itemsDelete = id.split(",");
                //Verificamos que tenga mas de 1 item
                if (itemsDelete.length > 0) {
                    for (int i = 0; i < itemsDelete.length; i++) {
                        obj = new B_VulnerabilidadAmenaza();
                        obj.setId(Integer.parseInt(itemsDelete[i]));
                        mensaje += DB_VulnerabilidadAmenaza.crud(obj, "d");
                        if ((i + 1) < itemsDelete.length) {
                            mensaje += "***";
                        }
                    }
                }
                flagAccion = 1;
            }
            if (flagAccion == 0) {
                mensaje = "La página solicitada no existe.";
                response.sendRedirect("mensaje.jsp?mensaje=" + mensaje + "&pagina=home.jsp");
            } else {
                if (mensaje.equals("OK")) {
                    mensaje += getObjHtml(idVulnerabilidad);
                }
                out.write(mensaje);
            }
        } else {
            //WITHOUT SESSION
            String mensaje = "Su sesion a expirado, ingrese nuevamente.";
            response.sendRedirect("mensaje.jsp?mensaje=" + mensaje + "&pagina=index.jsp");
        }
    }

    public String getObjHtml(int idVulnerabilidad) {
        StringBuilder html = new StringBuilder();
        ArrayList<B_VulnerabilidadAmenaza> listVulnerabilidadAmenaza = DB_VulnerabilidadAmenaza.getListFilerByIdVulnerabilidad(idVulnerabilidad);
        if (listVulnerabilidadAmenaza.isEmpty()) {
            html.append("<div class=\"Metronic-alerts alert alert-danger fade in\">No se encontraron Registros</div>");
        } else {
            html.append("<table class=\"table table-condensed table-hover table-bordered\">");
            html.append("<thead>");
            html.append("<tr>");
            html.append("<th>Nº</th>");
            html.append("<th>Amenaza</th>");
            html.append("<th colspan=\"2\">Acciones</th>");
            html.append("</tr>");
            html.append("</thead>");
            html.append("<tbody>");

            B_VulnerabilidadAmenaza objVulnerabilidadAmenaza;
            for (int i = 0; i < listVulnerabilidadAmenaza.size(); i++) {
                objVulnerabilidadAmenaza = listVulnerabilidadAmenaza.get(i);
                html.append("<tr>");
                html.append("<td>");
                html.append(i + 1);
                html.append("</td>");
                html.append("<td>");
                html.append(objVulnerabilidadAmenaza.getObjAmenaza().getDescripcion());
                html.append("</td>");
                html.append("<td width=\"1\">");
                html.append("<a class=\"tooltips\" data-original-title=\"Editar\" href=\"#basic\" data-toggle=\"modal\" onclick=\"changeDataModalCustom2('View/VulnerabilidadAmenaza/V_VulnerabilidadAmenaza_Update.jsp?action=u&id=").append(objVulnerabilidadAmenaza.getId()).append("&idVulnerabilidad=").append(idVulnerabilidad).append("', '40%');\"><i class=\"fa fa-pencil-square\"></i></a>");
                html.append("</td>");
                html.append("<td width=\"1\">");
                html.append("<a href=\"#basic\" data-toggle=\"modal\" onClick=\"changeDataModalCustom2('deleteRowUpdateDOM.jsp?servlet=C_VulnerabilidadAmenaza&action=d&id=").append(objVulnerabilidadAmenaza.getId()).append("&DOMObjet=table_content&idParent=").append(idVulnerabilidad).append("&idParentName=idVulnerabilidad', '40%');\"><i class=\"fa fa-trash-o\"></i></a>");
                html.append("</td>");
                html.append("</tr>");
            }
            html.append("</tbody>");
            html.append("</table>");
        }
        return html.toString();
    }
}
